package Soligee.view;


import Soligee.controller.bo.NFEntradaBO;
import Soligee.controller.facade.sessionFacadeImplements.SessionFacadeAlterarImplements;
import Soligee.controller.facade.sessionFacadeImplements.SessionFacadeBuscarImplements;
import Soligee.controller.facade.sessionFacadeImplements.SessionFacadeRemoverImplements;
import Soligee.decorador.DecoradorInicializaCombos;
import Soligee.decorador.DecoradorNF;
import Soligee.decorador.PaginacaoListaCincoEmCinco;
import Soligee.decorador.PaginacaoListaDezEmDez;
import Soligee.model.vo.lancamentos.ItensNFEntradaVO;
import com.icesoft.faces.component.ext.HtmlCommandButton;
import com.icesoft.faces.component.ext.HtmlCommandLink;
import com.icesoft.faces.component.ext.HtmlDataTable;
import com.icesoft.faces.component.ext.HtmlInputText;
import com.icesoft.faces.component.ext.HtmlOutputText;
import com.icesoft.faces.component.ext.HtmlPanelGroup;
import com.icesoft.faces.component.ext.HtmlSelectOneMenu;
import com.icesoft.faces.component.jsfcl.data.DefaultSelectedData;
import com.icesoft.faces.component.jsfcl.data.DefaultSelectionItems;
import com.icesoft.faces.component.jsfcl.data.DefaultTableDataModel;
import com.icesoft.faces.component.jsfcl.data.PopupBean;
import com.icesoft.faces.component.jsfcl.data.SelectInputDateBean;
import com.icesoft.faces.component.panelpopup.PanelPopup;
import com.icesoft.faces.component.paneltabset.PanelTab;
import com.icesoft.faces.component.paneltabset.PanelTabSet;
import com.icesoft.faces.component.selectinputdate.SelectInputDate;
import com.icesoft.faces.component.selectinputtext.SelectInputText;
import com.sun.rave.faces.data.DefaultSelectItemsArray;
import com.sun.rave.web.ui.appbase.AbstractPageBean;
import Soligee.model.vo.lancamentos.NFEntradaVO;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.faces.FacesException;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;


public class BuscarNotaFiscal extends AbstractPageBean {
    // <editor-fold defaultstate="collapsed" desc="Managed Component Definition">
    private int __placeholder;
     //item do autocomplete
    private DefaultSelectionItems item;
    //objeto utilizado para posteriormente alteracao
    private static NFEntradaVO nfEntrada; 
    //lista para preencher a tabela
    private List<NFEntradaVO> lista_de_notas;
   //atributo para paginar a lista de itens
    private static PaginacaoListaCincoEmCinco paginacaoListaItens;
    //lista decoradora auxiliar para montagem da tabela de itens adequadamente
    private static List<DecoradorNF> listaDecoradora = new ArrayList();
    //objeto bo para montagem de itens da nota fiscal pos alteracao
    private static NFEntradaBO nfentradaBO;
    //cria uma lista de itens após para após a alteracao ser utilizada
    private static List<ItensNFEntradaVO> listaItensNfentrada = new ArrayList();
    //paginacao da tabela de busca: 10 em 10
    private static PaginacaoListaDezEmDez paginacaoBusca;
    //variavel de controle para operações
    private static boolean controle;

    public static PaginacaoListaDezEmDez getPaginacaoBusca() {
        return paginacaoBusca;
    }

    public static void setPaginacaoBusca(PaginacaoListaDezEmDez paginacaoBusca) {
        BuscarNotaFiscal.paginacaoBusca = paginacaoBusca;
    }
    
    public static List<ItensNFEntradaVO> getListaItensNfentrada() {
        return listaItensNfentrada;
    }

    public static void setListaItensNfentrada(List<ItensNFEntradaVO> listaItensNfentrada) {
        BuscarNotaFiscal.listaItensNfentrada = listaItensNfentrada;
    }

    public static List<DecoradorNF> getListaDecoradora() {
        return listaDecoradora;
    }

    //gets e sets
    public static void setListaDecoradora(List<DecoradorNF> listaDecoradora) {
        BuscarNotaFiscal.listaDecoradora = listaDecoradora;
    }

    public DefaultSelectionItems getItem() {
          return item;
    }

    public void setItem(DefaultSelectionItems item) {
          this.item = item;
     }

    public static PaginacaoListaCincoEmCinco getPaginacaoListaItens() {
        return paginacaoListaItens;
    }

    public static void setPaginacaoListaItens(PaginacaoListaCincoEmCinco paginacaoListaItens) {
        BuscarNotaFiscal.paginacaoListaItens = paginacaoListaItens;
    }
    /**
     * <p>Automatically managed component initialization.  <strong>WARNING:</strong>
     * This method is automatically generated, so any user-specified code inserted
     * here is subject to being replaced.</p>
     */
    private void _init() throws Exception {
    }
    private DefaultTableDataModel dataTable1Model = new DefaultTableDataModel();

    public DefaultTableDataModel getDataTable1Model() {
        return dataTable1Model;
    }

    public void setDataTable1Model(DefaultTableDataModel dtdm) {
        this.dataTable1Model = dtdm;
    }
   
    private DefaultSelectedData selectOneMenu1Bean = new DefaultSelectedData();

    public DefaultSelectedData getSelectOneMenu1Bean() {
        return selectOneMenu1Bean;
    }

    public void setSelectOneMenu1Bean(DefaultSelectedData dsd) {
        this.selectOneMenu1Bean = dsd;
    }
    private SelectInputDateBean selectInputDate1Bean = new SelectInputDateBean();

    public SelectInputDateBean getSelectInputDate1Bean() {
        return selectInputDate1Bean;
    }

    public void setSelectInputDate1Bean(SelectInputDateBean sidb) {
        this.selectInputDate1Bean = sidb;
    }
    private SelectInputDateBean selectInputDateBean2 = new SelectInputDateBean();

    public SelectInputDateBean getSelectInputDateBean2() {
        return selectInputDateBean2;
    }

    public void setSelectInputDateBean2(SelectInputDateBean sidb) {
        this.selectInputDateBean2 = sidb;
    }
    private DefaultSelectedData selectOneRadio1Bean = new DefaultSelectedData();

    public DefaultSelectedData getSelectOneRadio1Bean() {
        return selectOneRadio1Bean;
    }

    public void setSelectOneRadio1Bean(DefaultSelectedData dsd) {
        this.selectOneRadio1Bean = dsd;
    }  

     //Botoes OpcaoBusca
    private DefaultSelectedData botaoSelecionadoTipoBusca = new DefaultSelectedData();

    public DefaultSelectedData getBotaoSelecionadoTipoBusca() {
        return botaoSelecionadoTipoBusca;
    }

    public void setBotaoSelecionadoTipoBusca(DefaultSelectedData dsd) {
        this.botaoSelecionadoTipoBusca = dsd;
    }
    private DefaultSelectionItems botaoTipoBusca = new DefaultSelectionItems();

    public DefaultSelectionItems getBotaoTipoBusca() {
        return botaoTipoBusca;
    }

    public void setBotaoTipoBusca(DefaultSelectionItems dsi) {
        this.botaoTipoBusca = dsi;
    }
  
    private HtmlDataTable tabelaItensNotaFIscal = new HtmlDataTable();

    public HtmlDataTable getTabelaItensNotaFIscal() {
        return tabelaItensNotaFIscal;
    }

    public void setTabelaItensNotaFIscal(HtmlDataTable hdt) {
        this.tabelaItensNotaFIscal = hdt;
    }
    private SelectInputText campoABuscar = new SelectInputText();

    public SelectInputText getCampoABuscar() {
        return campoABuscar;
    }

    public void setCampoABuscar(SelectInputText sit) {
        this.campoABuscar = sit;
    }
    private HtmlSelectOneMenu tipoBusca = new HtmlSelectOneMenu();

    public HtmlSelectOneMenu getTipoBusca() {
        return tipoBusca;
    }

    public void setTipoBusca(HtmlSelectOneMenu hsom) {
        this.tipoBusca = hsom;
    }
    private HtmlCommandButton btn_buscar = new HtmlCommandButton();

    public HtmlCommandButton getBtn_buscar() {
        return btn_buscar;
    }

    public void setBtn_buscar(HtmlCommandButton hcb) {
        this.btn_buscar = hcb;
    }

    private HtmlCommandLink linkCancelar = new HtmlCommandLink();

    public HtmlCommandLink getLinkCancelar() {
        return linkCancelar;
    }

    public void setLinkCancelar(HtmlCommandLink hcl) {
        this.linkCancelar = hcl;
    }
    private SelectInputDate selectInputDataEmissao = new SelectInputDate();

    public SelectInputDate getSelectInputDataEmissao() {
        return selectInputDataEmissao;
    }

    public void setSelectInputDataEmissao(SelectInputDate sid) {
        this.selectInputDataEmissao = sid;
    }
    private SelectInputDate selectInputDateEntrada = new SelectInputDate();

    public SelectInputDate getSelectInputDateEntrada() {
        return selectInputDateEntrada;
    }

    public void setSelectInputDateEntrada(SelectInputDate sid) {
        this.selectInputDateEntrada = sid;
    }
    private HtmlInputText campoPorcentagemImposto = new HtmlInputText();

    public HtmlInputText getCampoPorcentagemImposto() {
        return campoPorcentagemImposto;
    }

    public void setCampoPorcentagemImposto(HtmlInputText hit) {
        this.campoPorcentagemImposto = hit;
    }
    private HtmlInputText campoPorcentagemFrete = new HtmlInputText();

    public HtmlInputText getCampoPorcentagemFrete() {
        return campoPorcentagemFrete;
    }

    public void setCampoPorcentagemFrete(HtmlInputText hit) {
        this.campoPorcentagemFrete = hit;
    }
    private HtmlInputText campoPorcentagemDesconto = new HtmlInputText();

    public HtmlInputText getCampoPorcentagemDesconto() {
        return campoPorcentagemDesconto;
    }

    public void setCampoPorcentagemDesconto(HtmlInputText hit) {
        this.campoPorcentagemDesconto = hit;
    }
    private HtmlInputText campoPorcentagemEmbalagem = new HtmlInputText();

    public HtmlInputText getCampoPorcentagemEmbalagem() {
        return campoPorcentagemEmbalagem;
    }

    public void setCampoPorcentagemEmbalagem(HtmlInputText hit) {
        this.campoPorcentagemEmbalagem = hit;
    }
    private HtmlDataTable tabelaResultadoBusca = new HtmlDataTable();

    public HtmlDataTable getTabelaResultadoBusca() {
        return tabelaResultadoBusca;
    }

    public void setTabelaResultadoBusca(HtmlDataTable hdt) {
        this.tabelaResultadoBusca = hdt;
    }
    private HtmlCommandLink linkCancelar2 = new HtmlCommandLink();

    public HtmlCommandLink getLinkCancelar2() {
        return linkCancelar2;
    }

    public void setLinkCancelar2(HtmlCommandLink hcl) {
        this.linkCancelar2 = hcl;
    }
    private HtmlInputText campoNumeroNota = new HtmlInputText();

    public HtmlInputText getCampoNumeroNota() {
        return campoNumeroNota;
    }

    public void setCampoNumeroNota(HtmlInputText hit) {
        this.campoNumeroNota = hit;
    }
    private HtmlInputText campoValorTotalNota = new HtmlInputText();

    public HtmlInputText getCampoValorTotalNota() {
        return campoValorTotalNota;
    }

    public void setCampoValorTotalNota(HtmlInputText hit) {
        this.campoValorTotalNota = hit;
    }
    private DefaultSelectedData defaultSelectedData1 = new DefaultSelectedData();

    public DefaultSelectedData getDefaultSelectedData1() {
        return defaultSelectedData1;
    }

    public void setDefaultSelectedData1(DefaultSelectedData dsd) {
        this.defaultSelectedData1 = dsd;
    }
  
  
    private DefaultSelectItemsArray selectOneMenu1DefaultItems3 = new DefaultSelectItemsArray();

    public DefaultSelectItemsArray getSelectOneMenu1DefaultItems3() {
        return selectOneMenu1DefaultItems3;
    }

    public void setSelectOneMenu1DefaultItems3(DefaultSelectItemsArray dsia) {
        this.selectOneMenu1DefaultItems3 = dsia;
    }
    private HtmlSelectOneMenu opcaoParcelas = new HtmlSelectOneMenu();

    public HtmlSelectOneMenu getOpcaoParcelas() {
        return opcaoParcelas;
    }

    public void setOpcaoParcelas(HtmlSelectOneMenu hsom) {
        this.opcaoParcelas = hsom;
    }
    private PanelTabSet painelBuscarNotaFiscal = new PanelTabSet();

    public PanelTabSet getPainelBuscarNotaFiscal() {
        return painelBuscarNotaFiscal;
    }

    public void setPainelBuscarNotaFiscal(PanelTabSet pts) {
        this.painelBuscarNotaFiscal = pts;
    }
    private HtmlPanelGroup painelBotao = new HtmlPanelGroup();

    public HtmlPanelGroup getPainelBotao() {
        return painelBotao;
    }

    public void setPainelBotao(HtmlPanelGroup hpg) {
        this.painelBotao = hpg;
    }
  
    private HtmlDataTable tabelaResultadoBusca1 = new HtmlDataTable();

    public HtmlDataTable getTabelaResultadoBusca1() {
        return tabelaResultadoBusca1;
    }

    public void setTabelaResultadoBusca1(HtmlDataTable hdt) {
        this.tabelaResultadoBusca1 = hdt;
    }
    private DefaultTableDataModel dataTable1Model3 = new DefaultTableDataModel();

    public DefaultTableDataModel getDataTable1Model3() {
        return dataTable1Model3;
    }

    public void setDataTable1Model3(DefaultTableDataModel dtdm) {
        this.dataTable1Model3 = dtdm;
    }
    private HtmlCommandButton btnConfirmarAlteracao = new HtmlCommandButton();

    public HtmlCommandButton getBtnConfirmarAlteracao() {
        return btnConfirmarAlteracao;
    }

    public void setBtnConfirmarAlteracao(HtmlCommandButton hcb) {
        this.btnConfirmarAlteracao = hcb;
    }
    private HtmlCommandButton btnAlterar = new HtmlCommandButton();

    public HtmlCommandButton getBtnAlterar() {
        return btnAlterar;
    }

    public void setBtnAlterar(HtmlCommandButton hcb) {
        this.btnAlterar = hcb;
    }
    private HtmlCommandButton btnBuscar = new HtmlCommandButton();

    public HtmlCommandButton getBtnBuscar() {
        return btnBuscar;
    }

    public void setBtnBuscar(HtmlCommandButton hcb) {
        this.btnBuscar = hcb;
    }
    private PopupBean panelPopup1Bean = new PopupBean();

    public PopupBean getPanelPopup1Bean() {
        return panelPopup1Bean;
    }

    public void setPanelPopup1Bean(PopupBean pb) {
        this.panelPopup1Bean = pb;
    }
    private HtmlCommandButton btnPopUp1 = new HtmlCommandButton();

    public HtmlCommandButton getBtnPopUp1() {
        return btnPopUp1;
    }

    public void setBtnPopUp1(HtmlCommandButton hcb) {
        this.btnPopUp1 = hcb;
    }
    private HtmlCommandButton btnPopUp2 = new HtmlCommandButton();

    public HtmlCommandButton getBtnPopUp2() {
        return btnPopUp2;
    }

    public void setBtnPopUp2(HtmlCommandButton hcb) {
        this.btnPopUp2 = hcb;
    }
    private HtmlOutputText textoPopUp = new HtmlOutputText();

    public HtmlOutputText getTextoPopUp() {
        return textoPopUp;
    }

    public void setTextoPopUp(HtmlOutputText hot) {
        this.textoPopUp = hot;
    }
    private PanelPopup panelPopup = new PanelPopup();

    public PanelPopup getPanelPopup() {
        return panelPopup;
    }

    public void setPanelPopup(PanelPopup pp) {
        this.panelPopup = pp;
    }
    private HtmlInputText campoCodProduto = new HtmlInputText();

    public HtmlInputText getCampoCodProduto() {
        return campoCodProduto;
    }

    public void setCampoCodProduto(HtmlInputText hit) {
        this.campoCodProduto = hit;
    }
    private HtmlInputText campoDescricao = new HtmlInputText();

    public HtmlInputText getCampoDescricao() {
        return campoDescricao;
    }

    public void setCampoDescricao(HtmlInputText hit) {
        this.campoDescricao = hit;
    }
    private HtmlInputText campoQuantidade = new HtmlInputText();

    public HtmlInputText getCampoQuantidade() {
        return campoQuantidade;
    }

    public void setCampoQuantidade(HtmlInputText hit) {
        this.campoQuantidade = hit;
    }
    private HtmlInputText campoValorUnitario = new HtmlInputText();

    public HtmlInputText getCampoValorUnitario() {
        return campoValorUnitario;
    }

    public void setCampoValorUnitario(HtmlInputText hit) {
        this.campoValorUnitario = hit;
    }
    private HtmlInputText campoTotal = new HtmlInputText();

    public HtmlInputText getCampoTotal() {
        return campoTotal;
    }

    public void setCampoTotal(HtmlInputText hit) {
        this.campoTotal = hit;
    }
    private HtmlDataTable tabelaItensNotaFiscal = new HtmlDataTable();

    public HtmlDataTable getTabelaItensNotaFiscal() {
        return tabelaItensNotaFiscal;
    }

    public void setTabelaItensNotaFiscal(HtmlDataTable hdt) {
        this.tabelaItensNotaFiscal = hdt;
    }
    private SelectInputText campoABuscar1 = new SelectInputText();

    public SelectInputText getCampoABuscar1() {
        return campoABuscar1;
    }

    public void setCampoABuscar1(SelectInputText sit) {
        this.campoABuscar1 = sit;
    }
    private HtmlCommandButton tabelaItensNotaFiscalFooterFirstButton = new HtmlCommandButton();

    public HtmlCommandButton getTabelaItensNotaFiscalFooterFirstButton() {
        return tabelaItensNotaFiscalFooterFirstButton;
    }

    public void setTabelaItensNotaFiscalFooterFirstButton(HtmlCommandButton hcb) {
        this.tabelaItensNotaFiscalFooterFirstButton = hcb;
    }
    private HtmlCommandButton tabelaItensNotaFiscalFooterPreviousButton = new HtmlCommandButton();

    public HtmlCommandButton getTabelaItensNotaFiscalFooterPreviousButton() {
        return tabelaItensNotaFiscalFooterPreviousButton;
    }

    public void setTabelaItensNotaFiscalFooterPreviousButton(HtmlCommandButton hcb) {
        this.tabelaItensNotaFiscalFooterPreviousButton = hcb;
    }
    private HtmlCommandButton tabelaItensNotaFiscalFooterNextButton = new HtmlCommandButton();

    public HtmlCommandButton getTabelaItensNotaFiscalFooterNextButton() {
        return tabelaItensNotaFiscalFooterNextButton;
    }

    public void setTabelaItensNotaFiscalFooterNextButton(HtmlCommandButton hcb) {
        this.tabelaItensNotaFiscalFooterNextButton = hcb;
    }
    private HtmlCommandButton tabelaItensNotaFiscalFooterLastButton = new HtmlCommandButton();

    public HtmlCommandButton getTabelaItensNotaFiscalFooterLastButton() {
        return tabelaItensNotaFiscalFooterLastButton;
    }

    public void setTabelaItensNotaFiscalFooterLastButton(HtmlCommandButton hcb) {
        this.tabelaItensNotaFiscalFooterLastButton = hcb;
    }
   
    private DefaultSelectedData defaultSelectedData2 = new DefaultSelectedData();

    public DefaultSelectedData getDefaultSelectedData2() {
        return defaultSelectedData2;
    }

    public void setDefaultSelectedData2(DefaultSelectedData dsd) {
        this.defaultSelectedData2 = dsd;
    }
    private DefaultSelectedData defaultSelectedData3 = new DefaultSelectedData();

    public DefaultSelectedData getDefaultSelectedData3() {
        return defaultSelectedData3;
    }

    public void setDefaultSelectedData3(DefaultSelectedData dsd) {
        this.defaultSelectedData3 = dsd;
    }
   
    private HtmlInputText campoCodigoNota = new HtmlInputText();

    public HtmlInputText getCampoCodigoNota() {
        return campoCodigoNota;
    }

    public void setCampoCodigoNota(HtmlInputText hit) {
        this.campoCodigoNota = hit;
    }
    private DefaultSelectedData defaultSelectedData4 = new DefaultSelectedData();

    public DefaultSelectedData getDefaultSelectedData4() {
        return defaultSelectedData4;
    }

    public void setDefaultSelectedData4(DefaultSelectedData dsd) {
        this.defaultSelectedData4 = dsd;
    }
    
    private DefaultSelectItemsArray opcaoParcelasDefaultItems = new DefaultSelectItemsArray();

    public DefaultSelectItemsArray getOpcaoParcelasDefaultItems() {
        return opcaoParcelasDefaultItems;
    }

    public void setOpcaoParcelasDefaultItems(DefaultSelectItemsArray dsia) {
        this.opcaoParcelasDefaultItems = dsia;
    }
    private HtmlSelectOneMenu campoFornecedor = new HtmlSelectOneMenu();

    public HtmlSelectOneMenu getCampoFornecedor() {
        return campoFornecedor;
    }

    public void setCampoFornecedor(HtmlSelectOneMenu hsom) {
        this.campoFornecedor = hsom;
    }
    private PanelTab aba03 = new PanelTab();

    public PanelTab getAba03() {
        return aba03;
    }

    public void setAba03(PanelTab pt) {
        this.aba03 = pt;
    }
    private DefaultSelectedData defaultSelectedData5 = new DefaultSelectedData();

    public DefaultSelectedData getDefaultSelectedData5() {
        return defaultSelectedData5;
    }

    public void setDefaultSelectedData5(DefaultSelectedData dsd) {
        this.defaultSelectedData5 = dsd;
    }
    private DefaultSelectionItems selectOneMenu1DefaultItems = new DefaultSelectionItems();

    public DefaultSelectionItems getSelectOneMenu1DefaultItems() {
        return selectOneMenu1DefaultItems;
    }

    public void setSelectOneMenu1DefaultItems(DefaultSelectionItems dsi) {
        this.selectOneMenu1DefaultItems = dsi;
    }
    private HtmlCommandButton tabelaResultadoBuscaFooterFirstButton = new HtmlCommandButton();

    public HtmlCommandButton getTabelaResultadoBuscaFooterFirstButton() {
        return tabelaResultadoBuscaFooterFirstButton;
    }

    public void setTabelaResultadoBuscaFooterFirstButton(HtmlCommandButton hcb) {
        this.tabelaResultadoBuscaFooterFirstButton = hcb;
    }
    private HtmlCommandButton tabelaResultadoBuscaFooterPreviousButton = new HtmlCommandButton();

    public HtmlCommandButton getTabelaResultadoBuscaFooterPreviousButton() {
        return tabelaResultadoBuscaFooterPreviousButton;
    }

    public void setTabelaResultadoBuscaFooterPreviousButton(HtmlCommandButton hcb) {
        this.tabelaResultadoBuscaFooterPreviousButton = hcb;
    }
    private HtmlCommandButton tabelaResultadoBuscaFooterNextButton = new HtmlCommandButton();

    public HtmlCommandButton getTabelaResultadoBuscaFooterNextButton() {
        return tabelaResultadoBuscaFooterNextButton;
    }

    public void setTabelaResultadoBuscaFooterNextButton(HtmlCommandButton hcb) {
        this.tabelaResultadoBuscaFooterNextButton = hcb;
    }
    private HtmlCommandButton tabelaResultadoBuscaFooterLastButton = new HtmlCommandButton();

    public HtmlCommandButton getTabelaResultadoBuscaFooterLastButton() {
        return tabelaResultadoBuscaFooterLastButton;
    }

    public void setTabelaResultadoBuscaFooterLastButton(HtmlCommandButton hcb) {
        this.tabelaResultadoBuscaFooterLastButton = hcb;
    }
    private javax.faces.component.html.HtmlCommandLink linkAction = new javax.faces.component.html.HtmlCommandLink();

    public javax.faces.component.html.HtmlCommandLink getLinkAction() {
        return linkAction;
    }

    public void setLinkAction(javax.faces.component.html.HtmlCommandLink hcl) {
        this.linkAction = hcl;
    }
    private HtmlCommandButton btnExcluir = new HtmlCommandButton();

    public HtmlCommandButton getBtnExcluir() {
        return btnExcluir;
    }

    public void setBtnExcluir(HtmlCommandButton hcb) {
        this.btnExcluir = hcb;
    }
    private PanelTab aba02 = new PanelTab();

    public PanelTab getAba02() {
        return aba02;
    }

    public void setAba02(PanelTab pt) {
        this.aba02 = pt;
    }
    private DefaultSelectedData defaultSelectedData6 = new DefaultSelectedData();

    public DefaultSelectedData getDefaultSelectedData6() {
        return defaultSelectedData6;
    }

    public void setDefaultSelectedData6(DefaultSelectedData dsd) {
        this.defaultSelectedData6 = dsd;
    }
    private javax.faces.component.html.HtmlCommandButton btnAlteraItemTabela = new javax.faces.component.html.HtmlCommandButton();

    public javax.faces.component.html.HtmlCommandButton getBtnAlteraItemTabela() {
        return btnAlteraItemTabela;
    }

    public void setBtnAlteraItemTabela(javax.faces.component.html.HtmlCommandButton hcb) {
        this.btnAlteraItemTabela = hcb;
    }
    // Fim Botoes OpcaoBusca


    // </editor-fold>
    public BuscarNotaFiscal() {
    }

    @Override
    public void init() {
        // Perform initializations inherited from our superclass
        super.init();
        FacesContext.getCurrentInstance().getExternalContext().getRequestMap().clear();
        this.inicializaCampos();            
        // <editor-fold defaultstate="collapsed" desc="Managed Component Initialization">
        // Initialize automatically managed components
        // *Note* - this logic should NOT be modified
        try {
            _init();
        } catch (Exception e) {
            log("BuscarNotaFiscal Initialization Failure", e);
            throw e instanceof FacesException ? (FacesException) e: new FacesException(e);
        }
        
        // </editor-fold>

    }

    public void inicializaCampos(){
         //preenche o combo com a quantidade de parcelas
        selectOneMenu1DefaultItems3.clear();
        selectOneMenu1DefaultItems3.add(new SelectItem(1,"A Vista"));
        selectOneMenu1DefaultItems3.add(new SelectItem(2,"2 Vezes"));
        selectOneMenu1DefaultItems3.add(new SelectItem(3,"3 Vezes"));
        botaoTipoBusca.clear();
        botaoTipoBusca.add(new SelectItem(1,"Número"));
        botaoTipoBusca.add(new SelectItem(3,"Todos"));
       
        //limpa dataTableModel da tabela de busca
        dataTable1Model.setWrappedData(null);
        tabelaResultadoBusca.setRendered(false);
        btnAlterar.setRendered(false);
        btnExcluir.setRendered(false);
        btnConfirmarAlteracao.setRendered(false);
        this.setarCampos(true);
        this.limpaCampos();
        panelPopup.setRendered(false);      
        //limpa dataTableModel da tabela de itens
        this.dataTable1Model3.setWrappedData(null);
        //seta os botoes da paginacao da tabela de itnes
        controlaPaginacaoTabelaItens(0);
        //inicilizaFornecedor();
        inicilizaFornecedor();
        aba03.setDisabled(true);
    }

    @Override
    public void preprocess() {
    }

    @Override
    public void prerender() {
    }

    @Override
    public void destroy() {
    }

    protected ApplicationBean1 getApplicationBean1() {
        return (ApplicationBean1) getBean("ApplicationBean1");
    }

    protected SessionBean1 getview$SessionBean1() {
        return (SessionBean1) getBean("view$SessionBean1");
    }

    protected RequestBean1 getview$RequestBean1() {
        return (RequestBean1) getBean("view$RequestBean1");
    }


   public void setarCampos(boolean valor){
        campoNumeroNota.setDisabled(valor);
        selectInputDataEmissao.setDisabled(valor);
        selectInputDateEntrada.setDisabled(valor);
        campoPorcentagemImposto.setDisabled(valor);
        campoPorcentagemFrete.setDisabled(valor);
        campoPorcentagemEmbalagem.setDisabled(valor);
        campoPorcentagemDesconto.setDisabled(valor);
        campoValorTotalNota.setDisabled(valor);
        campoFornecedor.setDisabled(valor);
        opcaoParcelas.setDisabled(valor);
        campoCodigoNota.setDisabled(valor);
        btnAlteraItemTabela.setDisabled(valor);
    }

    public void limpaCampos(){
        campoNumeroNota.resetValue();
        selectInputDataEmissao.resetValue();
        selectInputDateEntrada.resetValue();
        campoPorcentagemImposto.resetValue();
        campoPorcentagemFrete.resetValue();
        campoPorcentagemEmbalagem.resetValue();
        campoPorcentagemDesconto.resetValue();
        campoValorTotalNota.resetValue();
        opcaoParcelas.resetValue();       
    }       
 
    protected CadastrarPessoaFisica getview$CadastrarPessoaFisica() {
        return (CadastrarPessoaFisica) getBean("view$CadastrarPessoaFisica");
    }

    protected BuscarPessoaFisica getview$BuscarPessoaFisica() {
        return (BuscarPessoaFisica) getBean("view$BuscarPessoaFisica");
    }

    protected ApplicationBean1 getview$ApplicationBean1() {
        return (ApplicationBean1) getBean("view$ApplicationBean1");
    }

    protected Login getview$Login() {
        return (Login) getBean("view$Login");
    }

    protected BuscarRepresentante getview$BuscarRepresentante() {
        return (BuscarRepresentante) getBean("view$BuscarRepresentante");
    }

    protected BuscarVendedor getview$BuscarVendedor() {
        return (BuscarVendedor) getBean("view$BuscarVendedor");
    }

    protected CadastrarPessoaJuridica getview$CadastrarPessoaJuridica() {
        return (CadastrarPessoaJuridica) getBean("view$CadastrarPessoaJuridica");
    }

    protected CadastrarVendedor getview$CadastrarVendedor() {
        return (CadastrarVendedor) getBean("view$CadastrarVendedor");
    }

    public String linkProximaAba_action() {
        painelBuscarNotaFiscal.setSelectedIndex(1);
        return null;
    }

    public List<NFEntradaVO> getLista_de_notas() {
        return lista_de_notas;
    }

    public void setLista_de_notas(List<NFEntradaVO> lista_de_notas) {
        this.lista_de_notas = lista_de_notas;
    }

    public String linkCancelar_action() {
        //return null means stay on the same page
        return "sair";
    }

    public String linkCancelar2_action() {
        //return null means stay on the same page
        return "sair";
    }

    public String btnBuscar_action() {
        
        SessionFacadeBuscarImplements facade_busca= new SessionFacadeBuscarImplements();
        switch(Integer.parseInt(tipoBusca.getValue().toString())){
             case 1://busca por numero
               this.setLista_de_notas(facade_busca.buscaPorCodigo(NFEntradaVO.class,campoABuscar.getValue().toString(),"numeroNFEntrada"));
               dataTable1Model.setWrappedData(this.getLista_de_notas());
               break;
             case 3://busca todos
               this.setLista_de_notas(facade_busca.buscarTodos("codNFEntrada",NFEntradaVO.class));
               dataTable1Model.setWrappedData(this.getLista_de_notas());
               break;
             default:
                System.out.println("Valor inválido do combobox para o tipo da consulta.");
                break;
            }//fim switch
         setPaginacaoBusca(new PaginacaoListaDezEmDez(this.getLista_de_notas()));
         this.controlaPaginacao(this.getLista_de_notas().size());
        tabelaResultadoBusca.setRendered(true);
        return null;
    }

    public String btnAlterar_action() {
        this.setarCampos(false);
        btnConfirmarAlteracao.setRendered(true);
        btnAlterar.setRendered(false);
        btnExcluir.setRendered(false);
        return null;
    }
    public String btnExcluir_action() {
       this.controle = false;
       controlaPopup(true,"Deseja excluir o usuário selecionado?!",true,true,"Sim","Não");
       return null;
    }

    public void controlaPopup(boolean renderedPopup,String textoPoup,boolean btn1Rendered, boolean btn2Rendered,
            String textobtn1, String textobtn2){
        panelPopup.setRendered(renderedPopup);
        textoPopUp.setValue(textoPoup);
        btnPopUp1.setValue(textobtn1);
        btnPopUp1.setRendered(btn1Rendered);
        btnPopUp2.setRendered(btn2Rendered);
        btnPopUp2.setValue(textobtn2);
    }

    public String btnConfirmarAlteracao_action() {
        controle = true;
        controlaPopup(true,"Deseja alterar a nota fiscal selecionada?",true,true,"Sim","Não");
        
        return null;
    }

    public static NFEntradaBO getNfentradaBO() {
        return nfentradaBO;
    }

    public static void setNfentradaBO(NFEntradaBO nfentradaBO) {
        BuscarNotaFiscal.nfentradaBO = nfentradaBO;
    }    
    
    /*metodo utilizado para coletar os itens da tabela de itens(estão como Decorador)
     * alterados ou não e monta uma lista de itens
     * */
    private void finalizaTabelaItens(){
        this.setListaItensNfentrada(this.getNfentradaBO().finalizaNota(this.getListaDecoradora()));
    }//fim finaliza tabela itens
    
    public String btnPopUp1_action() {
      if(controle==true){
      SessionFacadeAlterarImplements facadeAlterar =  new SessionFacadeAlterarImplements();
      Date dataEmissao = (Date) (Object) selectInputDataEmissao.getValue();
      Date dataEntrada = (Date) (Object) selectInputDateEntrada.getValue();
      Double totalNota = calculaNotaFinal(campoPorcentagemImposto, campoPorcentagemFrete, campoPorcentagemEmbalagem, campoPorcentagemDesconto);

      try{
           this.finalizaTabelaItens();
           facadeAlterar.alterarNFEntrada(Integer.parseInt(
                   campoCodigoNota.getValue().toString()),
                   dataEntrada,
                   dataEmissao,
                   Integer.parseInt(campoNumeroNota.getValue().toString()),
                   Integer.parseInt(opcaoParcelas.getValue().toString()),
                   Double.parseDouble(campoPorcentagemImposto.getValue().toString()),
                   Double.parseDouble(campoPorcentagemFrete.getValue().toString()),
                   Double.parseDouble(campoPorcentagemDesconto.getValue().toString()),
                   Double.parseDouble(campoPorcentagemEmbalagem.getValue().toString()),
                   this.getNfentradaBO().getValorTotalProdutos(),
                   totalNota,
                   Integer.parseInt(campoFornecedor.getValue().toString()),
                   this.getListaItensNfentrada(),this.getNfentradaBO().getListaProdutos());

             controlaPopup(true,"Nota Fiscal alterada com sucesso!",false,true,"","OK");

           }catch(Exception e){
             controlaPopup(true,"Erro:"+e.getMessage()+"caused by: "+e.getStackTrace(),false,true,"","OK"); 
             System.err.println("Erro:"+e.getMessage()+"caused by: "+e.getStackTrace());
           }
        }
        else{
            SessionFacadeRemoverImplements remover = new SessionFacadeRemoverImplements();
            try {
                    remover.removerNfEntrada(this.nfEntrada);
                    btnExcluir.setRendered(false);
                    btnAlterar.setRendered(false);
                    controlaPopup(true,"NfEntrada excluido com sucesso!",false,true,"","OK");
                    btnPopUp1.setRendered(false);
                    btnBuscar_action();
                    limpaCampos();
                    
            } catch (Exception e) {
                controlaPopup(true,"Erro:" + e.getMessage() + "caused by: " + e.getStackTrace(),false,true,"","OK");
                System.err.println("Erro:" + e.getMessage() + "caused by: " + e.getStackTrace());
            }
        }

        return null;
    }

    public String btnPopUp2_action() {
        panelPopup.setRendered(false);
        return null;
    }   

    public String tabelaItensNotaFiscal_firstPageAction() {
          dataTable1Model.setWrappedData(this.getPaginacaoListaItens().firstPage());
          tabelaItensNotaFiscalFooterFirstButton.setDisabled(true);
            tabelaItensNotaFiscalFooterPreviousButton.setDisabled(true);
            if(this.getPaginacaoListaItens().getTotalPaginas()>1){
                tabelaItensNotaFiscalFooterNextButton.setDisabled(false);
                tabelaItensNotaFiscalFooterLastButton.setDisabled(false);
            }
       return null;
    }

    public String tabelaItensNotaFiscal_previousPageAction() {
            dataTable1Model.setWrappedData(this.getPaginacaoListaItens().previousPage());
            if(this.getPaginacaoListaItens().getNumeroDaPagina()==1){
                  tabelaItensNotaFiscalFooterNextButton.setDisabled(true);
                  tabelaItensNotaFiscalFooterFirstButton.setDisabled(true);
            }
            if(this.getPaginacaoListaItens().getTotalPaginas()>1){
                 tabelaItensNotaFiscalFooterNextButton.setDisabled(false);
            }
            if(this.getPaginacaoListaItens().getNumeroDaPagina() >= 2){
                tabelaItensNotaFiscalFooterFirstButton.setDisabled(false);
            }
           return null;
           }

    public String tabelaItensNotaFiscal_nextPageAction() {
           dataTable1Model.setWrappedData(this.getPaginacaoListaItens().nextPage());
           tabelaItensNotaFiscalFooterPreviousButton.setDisabled(false);
            if(this.getPaginacaoListaItens().getTotalPaginas()==this.getPaginacaoListaItens().getNumeroDaPagina()){
                  tabelaItensNotaFiscalFooterNextButton.setDisabled(true);
                  tabelaItensNotaFiscalFooterLastButton.setDisabled(true);
            }
            if(this.getPaginacaoListaItens().getNumeroDaPagina() >= 2){
                 tabelaItensNotaFiscalFooterFirstButton.setDisabled(false);
            }
        return null;
    }

    public String tabelaItensNotaFiscal_lastPageAction() {
         dataTable1Model.setWrappedData(this.getPaginacaoListaItens().lastPage());
        if(this.getPaginacaoListaItens().getTotalPaginas()==this.getPaginacaoListaItens().getNumeroDaPagina()){
                  tabelaItensNotaFiscalFooterLastButton.setDisabled(false);
                  tabelaItensNotaFiscalFooterNextButton.setDisabled(true);
                  tabelaItensNotaFiscalFooterPreviousButton.setDisabled(false);
                  tabelaItensNotaFiscalFooterFirstButton.setDisabled(false);
        }
         if(this.getPaginacaoListaItens().getNumeroDaPagina() >= 2){
                tabelaItensNotaFiscalFooterFirstButton.setDisabled(false);
         }
         return null;
    }

    //botao de alteracao do item da tabela
    public String btnAlteraItemTabela_action() {
        DecoradorNF decorador = (DecoradorNF)tabelaItensNotaFiscal.getRowData();
        campoCodProduto.setValue(decorador.getCodProduto());
        campoDescricao.setValue(decorador.getDescricaoProduto());
        campoValorUnitario.setValue(decorador.getValorUnitario());
        campoQuantidade.setValue(decorador.getQuantidade());
        campoTotal.setValue(decorador.getTotal());
        aba03.setDisabled(false);
        painelBuscarNotaFiscal.setSelectedIndex(2);
        campoQuantidade.setReadonly(false);
        return null;
    }

    //botao do painel altera item
    public String btnOKAlteraItem_action() {
        System.out.println(getListaDecoradora().size());
        DecoradorNF decorador;
        //armazena o codigo do produto a ser alterado
        int codAux = Integer.parseInt(campoCodProduto.getValue().toString());
        /*percorre a lista decoradora para encontrar o posicao do produto na lista decoradora
        a partir de seu codigo*/
        int indiceRemover = 0;
        for (int i = 0; i <  getListaDecoradora().size(); i++) {
            decorador = (DecoradorNF)BuscarNotaFiscal.getListaDecoradora().get(i);
           //verificaa se a lista na posicao i contem o o produto desejado
           if(decorador.getCodProduto()==codAux){
               indiceRemover = i;
           }//fim if
        }//fim for
       //remover da lista o produto com o indice determinado pela condicao na linha 1050
       BuscarNotaFiscal.getListaDecoradora().remove(indiceRemover);
       //adiciona o produto na lista decoradora com os valores modificados
       BuscarNotaFiscal.getListaDecoradora().add(indiceRemover,
              new DecoradorNF(Integer.parseInt(campoCodProduto.getValue().toString()),campoDescricao.getValue().toString(),
               Double.parseDouble(campoQuantidade.getValue().toString()),Double.parseDouble(campoValorUnitario.getValue().toString())));
      //preenche a tabela de itens da nf com a lista decoradora
      dataTable1Model3.setWrappedData(BuscarNotaFiscal.getListaDecoradora());
      //renderiza a tabela
      tabelaItensNotaFiscal.setRendered(true);
      //seta o campo quantidade para readonly
      campoQuantidade.setReadonly(true);
      //desabilita aba de alteracao
      aba03.setDisabled(true);
      campoValorTotalNota.setValue(nfentradaBO.calculaTotalProduto(getListaDecoradora()));
      //retorna para a aba com a tabela de itens
      painelBuscarNotaFiscal.setSelectedIndex(1);

     return null;
    }


    public void campoABuscar_processValueChange(ValueChangeEvent vce) {
       /*if(Integer.parseInt(tipoBusca.getValue().toString())==1){
            item = new SessionFacadeBuscarImplements().consultaSelectInputText(4,"numeroNFEntrada",campoABuscar.getValue().toString(),NFEntradaVO.class);
        }*/
    }
  public String tabelaResultadoBusca_firstPageAction() {
          dataTable1Model.setWrappedData(this.getPaginacaoBusca().firstPage());
          tabelaResultadoBuscaFooterFirstButton.setDisabled(true);
            tabelaResultadoBuscaFooterPreviousButton.setDisabled(true);
            if(this.getPaginacaoBusca().getTotalPaginas()>1){
                tabelaResultadoBuscaFooterNextButton.setDisabled(false);
                tabelaResultadoBuscaFooterLastButton.setDisabled(false);
            }
       return null;
    }

    public String tabelaResultadoBusca_previousPageAction() {
            dataTable1Model.setWrappedData(this.getPaginacaoBusca().previousPage());
             if(this.getPaginacaoBusca().getNumeroDaPagina()==1){
                  tabelaResultadoBuscaFooterNextButton.setDisabled(true);
                  tabelaResultadoBuscaFooterFirstButton.setDisabled(true);
                   tabelaResultadoBuscaFooterPreviousButton.setDisabled(true);
            }
            if(this.getPaginacaoBusca().getTotalPaginas()>1){
                 tabelaResultadoBuscaFooterNextButton.setDisabled(false);
            }
            if(this.getPaginacaoBusca().getNumeroDaPagina() >= 2){
                tabelaResultadoBuscaFooterFirstButton.setDisabled(false);
            }
           return null;
           }

    public String tabelaResultadoBusca_nextPageAction() {
          dataTable1Model.setWrappedData(this.getPaginacaoBusca().nextPage());
           tabelaResultadoBuscaFooterPreviousButton.setDisabled(false);
            if(this.getPaginacaoBusca().getTotalPaginas()==this.getPaginacaoBusca().getNumeroDaPagina()){
                  tabelaResultadoBuscaFooterNextButton.setDisabled(true);
                   tabelaResultadoBuscaFooterLastButton.setDisabled(true);
            }
            if(this.getPaginacaoBusca().getNumeroDaPagina() >= 2){
                 tabelaResultadoBuscaFooterFirstButton.setDisabled(false);
            }
        return null;
    }

    public String tabelaResultadoBusca_lastPageAction() {
        dataTable1Model.setWrappedData(this.getPaginacaoBusca().lastPage());
        if(this.getPaginacaoBusca().getTotalPaginas()==this.getPaginacaoBusca().getNumeroDaPagina()){
                  tabelaResultadoBuscaFooterLastButton.setDisabled(true);
                  tabelaResultadoBuscaFooterNextButton.setDisabled(true);
                  tabelaResultadoBuscaFooterPreviousButton.setDisabled(false);
                  tabelaResultadoBuscaFooterFirstButton.setDisabled(false);
         }
         if(this.getPaginacaoBusca().getNumeroDaPagina() >= 2){
                tabelaResultadoBuscaFooterFirstButton.setDisabled(false);
         }
         return null;
    }

      //metodo para controlar os botoes da paginacao
    public void controlaPaginacao(int controlePaginas){
        if(controlePaginas == 0){
            tabelaResultadoBuscaFooterFirstButton.setDisabled(true);
            tabelaResultadoBuscaFooterPreviousButton.setDisabled(true);
            tabelaResultadoBuscaFooterNextButton.setDisabled(true);
            tabelaResultadoBuscaFooterLastButton.setDisabled(true);
        }
        if(controlePaginas>10){
         tabelaResultadoBuscaFooterNextButton.setDisabled(false);
         tabelaResultadoBuscaFooterLastButton.setDisabled(false);
         }
    }

    //metodo para controlar os botoes da paginacao da tabela de intes
    public void controlaPaginacaoTabelaItens(int controlePaginas){
        if(controlePaginas == 0){
            tabelaResultadoBuscaFooterFirstButton.setDisabled(true);
            tabelaResultadoBuscaFooterPreviousButton.setDisabled(true);
            tabelaResultadoBuscaFooterNextButton.setDisabled(true);
            tabelaResultadoBuscaFooterLastButton.setDisabled(true);
        }
        if(controlePaginas>5){
         tabelaResultadoBuscaFooterNextButton.setDisabled(false);
         tabelaResultadoBuscaFooterLastButton.setDisabled(false);
         }
    }

    public void inicilizaFornecedor(){
           selectOneMenu1DefaultItems.clear();
           this.setSelectOneMenu1DefaultItems(new DecoradorInicializaCombos().inicializarCampoFornecedor());
    }

    public String linkAction_action() {
        setarCampos(true);
        nfEntrada = (NFEntradaVO)tabelaResultadoBusca.getRowData();
        campoCodigoNota.setValue(nfEntrada.getCodNFEntrada());
        campoNumeroNota.setValue(nfEntrada.getNumeroNFEntrada());
        selectInputDataEmissao.setValue(nfEntrada.getDataEmissao());
        selectInputDateEntrada.setValue(nfEntrada.getDataEntrada());
        campoPorcentagemImposto.setValue(nfEntrada.getPercentualIPI());
        campoPorcentagemFrete.setValue(nfEntrada.getPercentualFrete());
        campoPorcentagemEmbalagem.setValue(nfEntrada.getPercentualEmbalagem());
        campoPorcentagemDesconto.setValue(nfEntrada.getPercentualDesconto());
        campoValorTotalNota.setValue(nfEntrada.getValorTotalNota());
        opcaoParcelas.setValue(new Integer(nfEntrada.getQtdadeParcela()));
        campoFornecedor.setValue(new Integer(nfEntrada.getFornecedor().getCodPessoa()));
        opcaoParcelas.setValue(new Integer(nfEntrada.getQtdadeParcela()));
        this.setNfentradaBO(new NFEntradaBO());
        //seta o decorador com os itens do pedido
        this.setListaDecoradora(this.getNfentradaBO().montaItens(nfEntrada.getCodNFEntrada()));
        //preenche a tabela de itens
        dataTable1Model3.setWrappedData(this.getListaDecoradora());
        //cria um objeto para fazer a paginacao da lista decoradora
        setPaginacaoListaItens(new PaginacaoListaCincoEmCinco(this.getListaDecoradora()));
        //chama o metodo que controla os botoes da paginacao passando o tamanho da lista
        controlaPaginacaoTabelaItens(this.getListaDecoradora().size());
        btnConfirmarAlteracao.setRendered(false);
        btnAlterar.setRendered(true);
        btnExcluir.setRendered(true);
        return null;
    }

    public double calculaNotaFinal(HtmlInputText campoPorcentagemImposto,HtmlInputText campoPorcentagemFrete,
                            HtmlInputText campoPorcentagemEmbalagem,HtmlInputText campoPorcentagemDesconto){

        double total=Double.parseDouble(campoValorTotalNota.getValue().toString());

        if(Double.parseDouble(campoPorcentagemImposto.getValue().toString())!=0.0){
            total=total+(total*(Double.parseDouble(campoPorcentagemImposto.getValue().toString())/100));
        }
        if(Double.parseDouble(campoPorcentagemFrete.getValue().toString())!=0.0){
            total=total+(total*(Double.parseDouble(campoPorcentagemFrete.getValue().toString())/100));
        }
        if(Double.parseDouble(campoPorcentagemEmbalagem.getValue().toString())!=0.0){
            total=total+(total*(Double.parseDouble(campoPorcentagemEmbalagem.getValue().toString())/100));
        }
        if(Double.parseDouble(campoPorcentagemDesconto.getValue().toString())!=0.0){
            total=total+(total*(Double.parseDouble(campoPorcentagemDesconto.getValue().toString())/100));
        }

        return total;
    }


    
}
